/**
 * 用户相关API接口
 */
import { request } from '@/api'
import type { ApiResponse } from '@/api'
import type { User } from '@/types/user'

// 用户登录请求参数
export interface LoginRequest {
  username: string
  password: string
}

// 用户登录响应数据
export interface LoginResponse {
  token: string
  user: User
}

// 获取用户列表响应数据
export interface UserListResponse {
  list: User[]
  total: number
}

/**
 * 用户相关API接口
 */
export const userApi = {
  /**
   * 用户登录
   * @param data 登录信息
   */
  login(data: LoginRequest): Promise<ApiResponse<LoginResponse>> {
    return request.post<LoginResponse>('/auth/login', data)
  },

  /**
   * 获取当前用户信息
   */
  getCurrentUser(): Promise<ApiResponse<User>> {
    return request.get<User>('/user/info')
  },

  /**
   * 获取用户列表
   * @param params 查询参数
   */
  getUserList(params?: { page?: number; size?: number }): Promise<ApiResponse<UserListResponse>> {
    return request.get<UserListResponse>('/users', { params })
  },

  /**
   * 创建用户
   * @param data 用户数据
   */
  createUser(data: Partial<User>): Promise<ApiResponse<User>> {
    return request.post<User>('/users', data)
  },

  /**
   * 更新用户信息
   * @param id 用户ID
   * @param data 更新数据
   */
  updateUser(id: number, data: Partial<User>): Promise<ApiResponse<User>> {
    return request.put<User>(`/users/${id}`, data)
  },

  /**
   * 删除用户
   * @param id 用户ID
   */
  deleteUser(id: number): Promise<ApiResponse<void>> {
    return request.delete<void>(`/users/${id}`)
  },
}
